// config

var app = angular.module('app').config(['$controllerProvider', '$compileProvider', '$filterProvider', '$provide',
	function ($controllerProvider, $compileProvider, $filterProvider, $provide) {
		// lazy controller, directive and service
		app.controller = $controllerProvider.register;
		app.directive = $compileProvider.directive;
		app.filter = $filterProvider.register;
		app.factory = $provide.factory;
		app.service = $provide.service;
		app.constant = $provide.constant;
		app.value = $provide.value;
	}
]);

app.config(['$translateProvider', function ($translateProvider) {
	// Register a loader for the static files
	// So, the module will search missing translation tables under the specified urls.
	// Those urls are [prefix][langKey][suffix].
	$translateProvider.useStaticFilesLoader({
		prefix: 'l10n/',
		suffix: '.js'
	});
	// Tell the module what language to use by default
	$translateProvider.preferredLanguage('en');
	// Tell the module to store the language in the local storage
	$translateProvider.useLocalStorage();
}]);

app.factory('UserInterceptor', ["$q", "$rootScope", function ($q, $rootScope) {
	return {
		request: function (config) { return config; },
		response: function (response) { return response; },
		responseError: function (response) {
			$rootScope.$emit("userIntercepted", { 401: "notAuthenticated", 419: "sessionTimeout" }[response.status]);
			return $q.reject(response);
		}
	};
}]);

app.config(function ($httpProvider) { $httpProvider.interceptors.push('UserInterceptor'); });